home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Franz PD
/
Franz PD Disk #114 (1991-03)(Amiga User Group Deutschland e.V.).zip
/
Franz PD Disk #114 (1991-03)(Amiga User Group Deutschland e.V.).adf
/
BootBlock
/
PrintLib.asm
< prev
next >
Wrap
Assembly Source File
|
1989-07-03
|
3KB
|
124 lines
* PrintBBLib von E.Hambuch
* Version 1.0
* Listing für A68k
CODE
include 'exec.i' ;eigene Include-Files !
include 'dos.i'
include 'startup.i'
_main:
lea dosname,a1 ;Dos-Library öffnen
CALLEXEC OldOpenLibrary
move.l d0,_DOSBase
beq ende
tst.l _WBenchMsg ;von der Workbench
beq.s clistart ;nein !
move.l #fenster,d1 ;sonst Fenster öffnen
move.l #MODE_NEWFILE,d2
CALLDOS Open
move.l d0,Output
beq closedos
bra.s start
clistart:
CALLDOS Output ;Output-Handle
move.l d0,Output
beq closedos
start:
move.l #filename,d1 ;Lib öffnen
move.l #MODE_OLDFILE,d2
jsr _LVOOpen(a6)
move.l d0,FilePtr
bne.s weiter1
lea text1,a0 ;nicht gefunden
bsr print
bra closefen
weiter1:
move.l d0,d1 ;Anzahl einlesen
move.l #BootAnz,d2
moveq #4,d3
jsr _LVORead(a6)
lea text3,a0
move.l BootAnz,d3
bsr dez ;in Dezimal umwandeln
lea text2,a0
bsr print ;und ausgeben
tst.l BootAnz ;Anzahl=0 ? -> Ende
beq closefile
loop: ;Hauptschleife
move.l FilePtr,d1
move.l #Buffer,d2
move.l #1012+20,d3 ;Bootblock (1012 Bytes) und Namen (20) einlesen
jsr _LVORead(a6)
tst.l d0 ;schon Dateiende oder Fehler ?
beq closefile
lea text5,a0
bsr print ;Tabs ausgeben (Zentrieren)
lea Buffer,a0 ;Name ausgeben
bsr print
lea text4,a0
bsr print ;und Linefeed
subq.l #1,BootAnz
bne.s loop
closefile: ;Datei schließen
move.l FilePtr,d1
CALLDOS Close
closefen:
tst.l _WBenchMsg
beq.s closedos
move.l Output,d1 ;Falls von Workbench
move.l #Buffer,d2
moveq #2,d3
CALLDOS Read ;warte auf RETURN
move.l Output,d1
jsr _LVOClose(a6) ;Fenster schließen
closedos:
move.l _DOSBase,a1
CALLEXEC CloseLibrary
ende: rts
print: ;Text ausgeben (muß mit $00-Byte enden !)
move.l a0,a1
s00: tst.b (A1)+
bne.s s00
suba.l a0,a1
move.l Output,d1
move.l a0,d2
move.l a1,d3
jmp _LVOWrite(a6)
dez: ;in 5 stellige Dezimalzahl umwandeln
lea deztab,a1
moveq #0,d1
dez2: moveq #'0'-1,d2
move.l d1,d4
lsl.l #2,d4
move.l d3,d5
dez3: addq.b #1,d2
sub.l 0(a1,d4.w),d3
bcc.s dez3
move.l d5,d3
move.b d2,0(a0,d1.w)
addq.b #1,d1
cmp.b #5,d1
bne dez2
rts
DATA
deztab:
dc.l 10000
dc.l 1000
dc.l 100
dc.l 10
dc.l 1
dosname: dc.b 'dos.library',0
fenster: dc.b 'CON:0/0/640/256/PrintBBLib Version 1.0 von E.Hambuch',0
filename: dc.b 'S:BBLib',0
text1: dc.b '"BBLib" nicht gefunden !',10,0
text2: dc.b 'Anzahl der Bootblöcke: '
text3: dc.b 'xxxxx',10
text4: dc.b 10,0
text5: dc.b 9,9,9,0
BSS
_DOSBase: ds.l 1
Output: ds.l 1
FilePtr: ds.l 1
BootAnz: ds.l 1
Buffer: ds.b 20+1012
END